package com.dp.client.views.estadoPaquete;

import com.dp.client.dto.EstadoPaqueteDTO;
import com.dp.client.servicios.estadopaquete.IServiciosEstadoPaquete;
import com.dp.client.servicios.estadopaquete.IServiciosEstadoPaqueteAsync;
import com.dp.client.util.Alerts;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.PopupPanel;
import com.google.gwt.user.client.ui.DialogBox;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.HasVerticalAlignment;
import com.google.gwt.user.client.ui.HorizontalSplitPanel;
import com.google.gwt.user.client.ui.HorizontalPanel;

public class EstadoPaqueteDialog extends PopupPanel {
	
	private final EstadoPaqueteDTO estadoPaqueteDTO;
	
	private TextBox txtNombre;
	private HorizontalPanel horizontalPanel;
	private Button btnCerrar;

	public EstadoPaqueteDialog(final EstadoPaqueteDTO estadoPaquete) 
	{
		super();
		
		FlexTable flowPanel = new FlexTable();
		setWidget(flowPanel);
		flowPanel.setSize("100%", "100%");
		
		flowPanel.setText(0, 0, "Descripcion:");
		txtNombre = new TextBox();
		flowPanel.setWidget(0, 1, txtNombre);
		
		flowPanel.getCellFormatter().setVerticalAlignment(1, 1, HasVerticalAlignment.ALIGN_TOP);
		
		horizontalPanel = new HorizontalPanel();
		flowPanel.setWidget(2, 1, horizontalPanel);
		
		Button btnAction = new Button("New button");
		horizontalPanel.add(btnAction);
		
		btnCerrar = new Button("Cerrar");
		btnCerrar.addClickHandler(new ClickHandler() {
			public void onClick(ClickEvent event) {
				cerrar();
			}
		});
		horizontalPanel.add(btnCerrar);
		
		this.estadoPaqueteDTO = estadoPaquete;
		if(estadoPaquete == null){ // se crea estadoPaquete
			setTitle("Registrar estadoPaquete");
			btnAction.setText("Registrar");
		}else { // se modifica estadoPaquete
			setTitle("Modificar estadoPaquete");
			btnAction.setText("Modificar");
		}
		btnAction.addClickHandler(new ClickHandler() {
			@Override
			public void onClick(ClickEvent event) {
				IServiciosEstadoPaqueteAsync serviciosestadoPaquete = GWT.create(IServiciosEstadoPaquete.class);
				serviciosestadoPaquete.registrarEstadoPaquete(readestadoPaqueteDTO(), new AsyncCallback<Boolean>() {

					@Override
					public void onFailure(Throwable caught) {
						Alerts.dialogErrorConexion();
					}

					@Override
					public void onSuccess(Boolean result) {
						if(estadoPaquete == null)
							Alerts.dialogExitoCreacionDeObjeto("estadoPaquete");
						else
							Alerts.dialogExitoModificacionDeObjeto("estadoPaquete");
						
					}
				});
			}
		});
		
		this.setGlassEnabled(true);
		this.setAnimationEnabled(true);
		
		//init
		llenaDatos(estadoPaqueteDTO);
	}
	
	private void llenaDatos(EstadoPaqueteDTO estadoPaqueteDTO){
		if(estadoPaqueteDTO == null) return;
		txtNombre.setText(estadoPaqueteDTO.getDescripcion());
	}
	private EstadoPaqueteDTO readestadoPaqueteDTO(){
		EstadoPaqueteDTO estadoPaquete = this.estadoPaqueteDTO == null ? new EstadoPaqueteDTO() : this.estadoPaqueteDTO;
		estadoPaquete.setDescripcion(txtNombre.getText());
		return estadoPaquete;
	}
	void cerrar(){
		this.hide();
	}
}
